﻿/**
 * @file PyFITKMaterialsFoams.h
 * @brief 泡沫材料 为python装饰器接口准备的封装类
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_MATERIALS_FOAMS_H___
#define _PY_MATERIALS_FOAMS_H___

#include <QString>
#include "FITKAcousticsPhysicsAPI.h"
#include "PyFITKMaterialsBase.h"

namespace Acoustics
{
    /**
     * @brief 泡沫材料 为python装饰器接口准备的封装类
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    class FITKAcousticsPhysicsAPI PyFITKMaterialsFoams :public PyFITKMaterialsBase
    {
    public:
        explicit PyFITKMaterialsFoams(const QString& name);
        explicit PyFITKMaterialsFoams() = default;
        virtual ~PyFITKMaterialsFoams() = default;
        /**
         * @brief  设置密度
         * @param[i]  density：密度
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setDensity(double density);
        /**
         * @brief  设置模量
         * @param[i]  shear：剪切模量
         * @param[i]  young：杨氏模量（拉伸模量）
         * @param[i]  poissonRatio：泊松比   
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setModulus(double shear,double young, double poissonRatio);
        /**
         * @brief  设置其余属性
         * @param[i]  flowResistivity：静态流阻率
         * @param[i]  porosity：孔隙率
         * @param[i]  tortuosity：曲折度
         * @param[i]  viscousLength：粘性特征长度
         * @param[i]  thermalLength：热特征长度
         * @param[i]  lossFactor：阻尼损耗因子
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool setOtherProp(double flowResistivity, double porosity, double tortuosity, double viscousLength, double thermalLength, double lossFactor);
        /**
         * @brief  创建材料
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool createMaterial(const QString& name);
    private:
    };
}
#endif
